#include <bits/stdc++.h>
#include <string>
typedef long long LL;
using namespace std;

const int NUM = 1e3+10;
int n,k;
int w[NUM];
bool bu[NUM][NUM];
bool vis[NUM];
int ret=0;
int step=2;

void dfs(int pos)
{
	if(step==0)
	{
		if(k>0)
		{
			step=2;
			k--;
		}
		else return;
	}
	for(int i=pos;i<n;i++)
	{
		if(bu[pos][i] && !vis[pos])
		{
			step--;
			vis[pos]=true;
			ret+=w[pos];
			dfs(pos+1);
		}
	}
}

int main()
{
	cin>>n>>k;
	for(int i=0;i<n;i++)
	{
		cin>>w[i];
	}
	for(int i=0;i<n-1;i++)
	{
		int x,y;
		cin>>x>>y;
		bu[x-1][y-1]=true;
		bu[y-1][x-1]=true;
	}
	dfs(0);
	cout<<ret<<endl;
	return 0;
}
